package us.kg.kotoriforest.schedule.service;

import us.kg.kotoriforest.schedule.pojo.SysUser;

/**
 * ClassName: us.kg.kotoriforest.schedule.service.SysUserService </br>
 * Description: 声明了以 sys_user 表为核心的业务处理代码
 *
 * @author Kotori rotroutine@163.com
 * @since 2024/12/3
 */
public interface SysUserService {
    /**
     * 用户登录
     *
     * @param sysUser 输入输出型参数。输入进行登录的用户的用户名和明文密码封装成的 ORM 对象；如果登录成功输出返回该对象并填写uid和将密码加密，如果登录失败则无意义
     * @return 登录成功返回 SUCCESS，登用户不存在返回 USER_NOT_FOUND，登录用户存在但密码错误返回 FAIL
     */
    State login(SysUser sysUser);

    /**
     * 注册一个新用户
     *
     * @param sysUser 新用户的用户名和明文密码封装成的 ORM 对象
     * @return 注册成功返回 SUCCESS，失败返回 FAIL
     */
    State register(SysUser sysUser);

    /**
     * 校验用户名是否被占用
     *
     * @param username 校验的用户名
     * @return 如果被占用会返回 {@code State.USER_ALREADY_EXIST}；没被占用则会返回 {@code State.USER_NOT_FOUND}
     */
    State checkUsernameUsed(String username);

    enum State {
        QUERY_SUCCESS,
        QUERY_FAIL,
        USER_NOT_FOUND,
        USER_ALREADY_EXIST,
    }
}
